﻿2026-08-01T18:03:01.5097587Z Current runner version: '2.336.0'
2026-08-01T18:03:01.5134389Z ##[group]Runner Image Provisioner
2026-08-01T18:03:01.5135673Z Hosted Compute Agent
2026-08-01T18:03:01.5136823Z Version: 20260707.563
2026-08-01T18:03:01.5137972Z Commit: 02667638d2b423fbc733a8e32a88b44996a3ba6e
2026-08-01T18:03:01.5139303Z Build Date: 2026-07-07T19:33:50Z
2026-08-01T18:03:01.5140487Z Worker ID: {42b0812b-f99f-4c86-9455-0d4fdc19bdba}
2026-08-01T18:03:01.5141720Z Azure Region: eastus
2026-08-01T18:03:01.5142709Z ##[endgroup]
2026-08-01T18:03:01.5145503Z ##[group]Operating System
2026-08-01T18:03:01.5146506Z Ubuntu
2026-08-01T18:03:01.5147538Z 24.04.4
2026-08-01T18:03:01.5148424Z LTS
2026-08-01T18:03:01.5149360Z ##[endgroup]
2026-08-01T18:03:01.5150289Z ##[group]Runner Image
2026-08-01T18:03:01.5151422Z Image: ubuntu-24.04
2026-08-01T18:03:01.5152636Z Version: 20260720.247.2
2026-08-01T18:03:01.5155177Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260720.247/images/ubuntu/Ubuntu2404-Readme.md
2026-08-01T18:03:01.5157903Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260720.247
2026-08-01T18:03:01.5159669Z ##[endgroup]
2026-08-01T18:03:01.5161541Z ##[group]GITHUB_TOKEN Permissions
2026-08-01T18:03:01.5164640Z Contents: read
2026-08-01T18:03:01.5165656Z Metadata: read
2026-08-01T18:03:01.5166553Z ##[endgroup]
2026-08-01T18:03:01.5169802Z Secret source: Actions
2026-08-01T18:03:01.5171457Z Prepare workflow directory
2026-08-01T18:03:01.5748253Z Prepare all required actions
2026-08-01T18:03:01.5821414Z Getting action download info
2026-08-01T18:03:01.7685089Z Download action repository 'actions/checkout@v4' (SHA:11d5960a326750d5838078e36cf38b85af677262)
2026-08-01T18:03:01.9979262Z Download action repository 'actions/setup-python@v5' (SHA:a26af69be951a213d495a4c3e4e4022e16d87065)
2026-08-01T18:03:02.1911068Z Complete job name: Migration, contracts, quality and repository safety
2026-08-01T18:03:02.2702265Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:03:02.2711182Z ##[group]Run actions/checkout@v4
2026-08-01T18:03:02.2711935Z with:
2026-08-01T18:03:02.2712375Z   fetch-depth: 0
2026-08-01T18:03:02.2712899Z   repository: Gamexgit/FinanceManager
2026-08-01T18:03:02.2716923Z   token: ***
2026-08-01T18:03:02.2717365Z   ssh-strict: true
2026-08-01T18:03:02.2717801Z   ssh-user: git
2026-08-01T18:03:02.2718245Z   persist-credentials: true
2026-08-01T18:03:02.2718735Z   clean: true
2026-08-01T18:03:02.2719174Z   sparse-checkout-cone-mode: true
2026-08-01T18:03:02.2719699Z   fetch-tags: false
2026-08-01T18:03:02.2720139Z   show-progress: true
2026-08-01T18:03:02.2720595Z   lfs: false
2026-08-01T18:03:02.2721060Z   submodules: false
2026-08-01T18:03:02.2721519Z   set-safe-directory: true
2026-08-01T18:03:02.2722033Z   allow-unsafe-pr-checkout: false
2026-08-01T18:03:02.2722833Z env:
2026-08-01T18:03:02.2723265Z   PYTHONPATH: src
2026-08-01T18:03:02.2723898Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:02.2724611Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:02.2725570Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:02.2726448Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:02.2727156Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:02.2727693Z ##[endgroup]
2026-08-01T18:03:02.3919410Z Syncing repository: Gamexgit/FinanceManager
2026-08-01T18:03:02.3922881Z ##[group]Getting Git version info
2026-08-01T18:03:02.3925414Z Working directory is '/home/runner/work/FinanceManager/FinanceManager'
2026-08-01T18:03:02.3928677Z [command]/usr/bin/git version
2026-08-01T18:03:02.4021992Z git version 2.54.0
2026-08-01T18:03:02.4028983Z ##[endgroup]
2026-08-01T18:03:02.4075588Z Temporarily overriding HOME='/home/runner/work/_temp/820712b7-2f06-4a11-a38b-d20ed4d0b05b' before making global git config changes
2026-08-01T18:03:02.4079276Z Adding repository directory to the temporary git global config as a safe directory
2026-08-01T18:03:02.4082407Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:03:02.4206300Z Deleting the contents of '/home/runner/work/FinanceManager/FinanceManager'
2026-08-01T18:03:02.4210028Z ##[group]Initializing the repository
2026-08-01T18:03:02.4213848Z [command]/usr/bin/git init /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:03:02.4273181Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-08-01T18:03:02.4275675Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-08-01T18:03:02.4277613Z hint: to use in all of your new repositories, which will suppress this warning,
2026-08-01T18:03:02.4324557Z hint: call:
2026-08-01T18:03:02.4325834Z hint:
2026-08-01T18:03:02.4327851Z hint: 	git config --global init.defaultBranch <name>
2026-08-01T18:03:02.4333038Z hint:
2026-08-01T18:03:02.4335208Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-08-01T18:03:02.4352722Z hint: 'development'. The just-created branch can be renamed via this command:
2026-08-01T18:03:02.4357230Z hint:
2026-08-01T18:03:02.4358334Z hint: 	git branch -m <name>
2026-08-01T18:03:02.4359690Z hint:
2026-08-01T18:03:02.4361301Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-08-01T18:03:02.4364195Z Initialized empty Git repository in /home/runner/work/FinanceManager/FinanceManager/.git/
2026-08-01T18:03:02.4368702Z [command]/usr/bin/git remote add origin https://github.com/Gamexgit/FinanceManager
2026-08-01T18:03:02.4372997Z ##[endgroup]
2026-08-01T18:03:02.4376542Z ##[group]Disabling automatic garbage collection
2026-08-01T18:03:02.4437465Z [command]/usr/bin/git config --local gc.auto 0
2026-08-01T18:03:02.4441327Z ##[endgroup]
2026-08-01T18:03:02.4443033Z ##[group]Setting up auth
2026-08-01T18:03:02.4446712Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-01T18:03:02.4526849Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-01T18:03:02.6261412Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-01T18:03:02.6400349Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-01T18:03:02.6425754Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-01T18:03:02.6486341Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-01T18:03:02.6525548Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-08-01T18:03:02.6529260Z ##[endgroup]
2026-08-01T18:03:02.6599593Z ##[group]Fetching the repository
2026-08-01T18:03:02.6639156Z [command]/usr/bin/git -c protocol.version=2 fetch --prune --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/* +465728a905508db6e81667eceb73c74097e49722:refs/remotes/pull/32/merge
2026-08-01T18:03:03.9340566Z From https://github.com/Gamexgit/FinanceManager
2026-08-01T18:03:03.9349668Z  * [new branch]      Sprint14/twr-xirr-performance-attribution -> origin/Sprint14/twr-xirr-performance-attribution
2026-08-01T18:03:03.9354474Z  * [new branch]      Sprint15/household-import-transfer-reconciliation-v1 -> origin/Sprint15/household-import-transfer-reconciliation-v1
2026-08-01T18:03:03.9357866Z  * [new branch]      Sprint16/hotfix-openpyxl-runtime-dependency -> origin/Sprint16/hotfix-openpyxl-runtime-dependency
2026-08-01T18:03:03.9362461Z  * [new branch]      Sprint16/smart-household-inbox-real-data-onboarding-v2 -> origin/Sprint16/smart-household-inbox-real-data-onboarding-v2
2026-08-01T18:03:03.9368049Z  * [new branch]      feat/budget-analytics-data-explorer-v1   -> origin/feat/budget-analytics-data-explorer-v1
2026-08-01T18:03:03.9372685Z  * [new branch]      feat/budget-categories-duplicates-cleanup -> origin/feat/budget-categories-duplicates-cleanup
2026-08-01T18:03:03.9378089Z  * [new branch]      feat/budget-categories-ux-fix            -> origin/feat/budget-categories-ux-fix
2026-08-01T18:03:03.9382770Z  * [new branch]      feat/budget-import-production-v2         -> origin/feat/budget-import-production-v2
2026-08-01T18:03:03.9388062Z  * [new branch]      feat/budget-monthly-import-rule-learning-v1 -> origin/feat/budget-monthly-import-rule-learning-v1
2026-08-01T18:03:03.9392827Z  * [new branch]      feat/budget-phase-1-4                    -> origin/feat/budget-phase-1-4
2026-08-01T18:03:03.9397282Z  * [new branch]      feat/budget-planning-forecast-v1         -> origin/feat/budget-planning-forecast-v1
2026-08-01T18:03:03.9401142Z  * [new branch]      feat/budget-planning-usability-v2        -> origin/feat/budget-planning-usability-v2
2026-08-01T18:03:03.9406919Z  * [new branch]      feat/budget-review-bulk-assign-confirm   -> origin/feat/budget-review-bulk-assign-confirm
2026-08-01T18:03:03.9412206Z  * [new branch]      feat/budget-workflow-help-ux             -> origin/feat/budget-workflow-help-ux
2026-08-01T18:03:03.9418055Z  * [new branch]      feat/finance-command-center-monthly-close-v1 -> origin/feat/finance-command-center-monthly-close-v1
2026-08-01T18:03:03.9423858Z  * [new branch]      feat/fixed-costs-subscriptions-v1        -> origin/feat/fixed-costs-subscriptions-v1
2026-08-01T18:03:03.9429454Z  * [new branch]      feat/grocery-matching-review-learning-v2 -> origin/feat/grocery-matching-review-learning-v2
2026-08-01T18:03:03.9435454Z  * [new branch]      feat/grocery-product-price-providers-v1  -> origin/feat/grocery-product-price-providers-v1
2026-08-01T18:03:03.9442364Z  * [new branch]      feat/migros-product-savings-grocery-optimizer-v1 -> origin/feat/migros-product-savings-grocery-optimizer-v1
2026-08-01T18:03:03.9448346Z  * [new branch]      feat/mobile-nav-income-csv-final         -> origin/feat/mobile-nav-income-csv-final
2026-08-01T18:03:03.9456001Z  * [new branch]      feat/mobile-nav-income-hotfix-v2         -> origin/feat/mobile-nav-income-hotfix-v2
2026-08-01T18:03:03.9460700Z  * [new branch]      feat/mobile-nav-income-planning-v1       -> origin/feat/mobile-nav-income-planning-v1
2026-08-01T18:03:03.9465486Z  * [new branch]      fix/manual-entry-uat-flows               -> origin/fix/manual-entry-uat-flows
2026-08-01T18:03:03.9470106Z  * [new branch]      fix/sprint16.2-insurance-family-order    -> origin/fix/sprint16.2-insurance-family-order
2026-08-01T18:03:03.9475915Z  * [new branch]      hotfix/sprint13-global-portfolio-aggregation -> origin/hotfix/sprint13-global-portfolio-aggregation
2026-08-01T18:03:03.9481107Z  * [new branch]      hotfix/sprint8-kpi-overflow              -> origin/hotfix/sprint8-kpi-overflow
2026-08-01T18:03:03.9485763Z  * [new branch]      hotfix/sprint8-readonly-render           -> origin/hotfix/sprint8-readonly-render
2026-08-01T18:03:03.9490655Z  * [new branch]      integration/portfolio-phase3-to-main     -> origin/integration/portfolio-phase3-to-main
2026-08-01T18:03:03.9495861Z  * [new branch]      main                                     -> origin/main
2026-08-01T18:03:03.9499671Z  * [new branch]      sprint10/portfolio-go-live               -> origin/sprint10/portfolio-go-live
2026-08-01T18:03:03.9504568Z  * [new branch]      sprint11/portfolio-completeness-ux       -> origin/sprint11/portfolio-completeness-ux
2026-08-01T18:03:03.9509625Z  * [new branch]      sprint12/truewealth-verified-import      -> origin/sprint12/truewealth-verified-import
2026-08-01T18:03:03.9545417Z  * [new branch]      sprint13/postfinance-ledger-import       -> origin/sprint13/postfinance-ledger-import
2026-08-01T18:03:03.9551737Z  * [new branch]      sprint16.1/classification-coverage-import-readiness -> origin/sprint16.1/classification-coverage-import-readiness
2026-08-01T18:03:03.9558638Z  * [new branch]      sprint16.2/first-import-calibration-portal-flow -> origin/sprint16.2/first-import-calibration-portal-flow
2026-08-01T18:03:03.9566320Z  * [new branch]      sprint16.3/import-readiness-batched-decisions-performance -> origin/sprint16.3/import-readiness-batched-decisions-performance
2026-08-01T18:03:03.9572191Z  * [new branch]      sprint17a/data-truth                     -> origin/sprint17a/data-truth
2026-08-01T18:03:03.9578999Z  * [new branch]      sprint17b/equity-quote-refresh           -> origin/sprint17b/equity-quote-refresh
2026-08-01T18:03:03.9586003Z  * [new branch]      sprint17b/household-cockpit              -> origin/sprint17b/household-cockpit
2026-08-01T18:03:03.9591049Z  * [new branch]      sprint17c/data-truth-navigation-today-lite -> origin/sprint17c/data-truth-navigation-today-lite
2026-08-01T18:03:03.9599114Z  * [new branch]      sprint17e/household-year-forecast-v1     -> origin/sprint17e/household-year-forecast-v1
2026-08-01T18:03:03.9602717Z  * [new branch]      sprint2/navigation-design-shell          -> origin/sprint2/navigation-design-shell
2026-08-01T18:03:03.9608319Z  * [new branch]      sprint3.1/reconciliation-semantic-hardening -> origin/sprint3.1/reconciliation-semantic-hardening
2026-08-01T18:03:03.9614880Z  * [new branch]      sprint3/reconciliation-snapshot-foundation -> origin/sprint3/reconciliation-snapshot-foundation
2026-08-01T18:03:03.9620897Z  * [new branch]      sprint4.1/portfolio-policy-contract-hardening -> origin/sprint4.1/portfolio-policy-contract-hardening
2026-08-01T18:03:03.9628239Z  * [new branch]      sprint4/portfolio-policy-foundation      -> origin/sprint4/portfolio-policy-foundation
2026-08-01T18:03:03.9644105Z  * [new branch]      sprint5/portfolio-performance-foundation -> origin/sprint5/portfolio-performance-foundation
2026-08-01T18:03:03.9650084Z  * [new branch]      sprint6/portfolio-data-ingestion-reconciliation -> origin/sprint6/portfolio-data-ingestion-reconciliation
2026-08-01T18:03:03.9656545Z  * [new branch]      sprint7/postfinance-portfolio-source     -> origin/sprint7/postfinance-portfolio-source
2026-08-01T18:03:03.9661559Z  * [new branch]      sprint8/market-fx-benchmark-risk         -> origin/sprint8/market-fx-benchmark-risk
2026-08-01T18:03:03.9666558Z  * [new branch]      sprint9/portfolio-basis-policy           -> origin/sprint9/portfolio-basis-policy
2026-08-01T18:03:03.9670319Z  * [new tag]         v0.3.0                                   -> v0.3.0
2026-08-01T18:03:03.9672975Z  * [new tag]         v0.3.1                                   -> v0.3.1
2026-08-01T18:03:03.9676047Z  * [new tag]         v0.3.2                                   -> v0.3.2
2026-08-01T18:03:03.9679110Z  * [new ref]         465728a905508db6e81667eceb73c74097e49722 -> pull/32/merge
2026-08-01T18:03:03.9687837Z ##[endgroup]
2026-08-01T18:03:03.9691049Z ##[group]Determining the checkout info
2026-08-01T18:03:03.9694954Z ##[endgroup]
2026-08-01T18:03:03.9697155Z [command]/usr/bin/git sparse-checkout disable
2026-08-01T18:03:03.9704669Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-08-01T18:03:03.9711943Z ##[group]Checking out the ref
2026-08-01T18:03:03.9715815Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/32/merge
2026-08-01T18:03:04.0240222Z Note: switching to 'refs/remotes/pull/32/merge'.
2026-08-01T18:03:04.0242313Z 
2026-08-01T18:03:04.0244660Z You are in 'detached HEAD' state. You can look around, make experimental
2026-08-01T18:03:04.0248938Z changes and commit them, and you can discard any commits you make in this
2026-08-01T18:03:04.0253415Z state without impacting any branches by switching back to a branch.
2026-08-01T18:03:04.0257217Z 
2026-08-01T18:03:04.0265565Z If you want to create a new branch to retain commits you create, you may
2026-08-01T18:03:04.0268961Z do so (now or later) by using -c with the switch command. Example:
2026-08-01T18:03:04.0270933Z 
2026-08-01T18:03:04.0274935Z   git switch -c <new-branch-name>
2026-08-01T18:03:04.0277081Z 
2026-08-01T18:03:04.0278621Z Or undo this operation with:
2026-08-01T18:03:04.0280258Z 
2026-08-01T18:03:04.0281611Z   git switch -
2026-08-01T18:03:04.0283006Z 
2026-08-01T18:03:04.0285460Z Turn off this advice by setting config variable advice.detachedHead to false
2026-08-01T18:03:04.0287367Z 
2026-08-01T18:03:04.0290873Z HEAD is now at 465728a Merge 075df7b91f8035b3757f206da3a83db8768e6852 into ef31adbcfb8ed7a9dd7be845113934f02f192506
2026-08-01T18:03:04.0305436Z ##[endgroup]
2026-08-01T18:03:04.0313858Z [command]/usr/bin/git log -1 --format=%H
2026-08-01T18:03:04.0355347Z 465728a905508db6e81667eceb73c74097e49722
2026-08-01T18:03:04.0785294Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:03:04.0790924Z ##[group]Run actions/setup-python@v5
2026-08-01T18:03:04.0791979Z with:
2026-08-01T18:03:04.0792729Z   python-version: 3.11
2026-08-01T18:03:04.0793989Z   cache: pip
2026-08-01T18:03:04.0794923Z   cache-dependency-path: requirements-ci.txt
2026-08-01T18:03:04.0796082Z   check-latest: false
2026-08-01T18:03:04.0805507Z   token: ***
2026-08-01T18:03:04.0806342Z   update-environment: true
2026-08-01T18:03:04.0807306Z   allow-prereleases: false
2026-08-01T18:03:04.0808232Z   freethreaded: false
2026-08-01T18:03:04.0809057Z env:
2026-08-01T18:03:04.0809771Z   PYTHONPATH: src
2026-08-01T18:03:04.0810592Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:04.0812032Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:04.0814237Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:04.0816052Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:04.0817446Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:04.0818453Z ##[endgroup]
2026-08-01T18:03:04.2277050Z ##[group]Installed versions
2026-08-01T18:03:04.2354382Z (node:2021) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-01T18:03:04.2358614Z Successfully set up CPython (3.11.15)
2026-08-01T18:03:04.2361841Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-01T18:03:04.2365723Z ##[endgroup]
2026-08-01T18:03:04.2798910Z [command]/opt/hostedtoolcache/Python/3.11.15/x64/bin/pip cache dir
2026-08-01T18:03:04.6885866Z /home/runner/.cache/pip
2026-08-01T18:03:04.7565717Z pip cache is not found
2026-08-01T18:03:04.7707789Z ##[group]Run python -m pip install -e . -r requirements-ci.txt
2026-08-01T18:03:04.7708421Z [36;1mpython -m pip install -e . -r requirements-ci.txt[0m
2026-08-01T18:03:04.7763139Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:04.7763733Z env:
2026-08-01T18:03:04.7763975Z   PYTHONPATH: src
2026-08-01T18:03:04.7764219Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:04.7764617Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:04.7765155Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:04.7765650Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:04.7766044Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:04.7766388Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:04.7766843Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:04.7767289Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:04.7767720Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:04.7768115Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:04.7768514Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:04.7769103Z ##[endgroup]
2026-08-01T18:03:05.4604017Z Obtaining file:///home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:03:05.4620893Z   Installing build dependencies: started
2026-08-01T18:03:06.1714537Z   Installing build dependencies: finished with status 'done'
2026-08-01T18:03:06.1718017Z   Checking if build backend supports build_editable: started
2026-08-01T18:03:06.4624965Z   Checking if build backend supports build_editable: finished with status 'done'
2026-08-01T18:03:06.4627848Z   Getting requirements to build editable: started
2026-08-01T18:03:06.8355288Z   Getting requirements to build editable: finished with status 'done'
2026-08-01T18:03:06.8362934Z   Preparing editable metadata (pyproject.toml): started
2026-08-01T18:03:07.0165153Z   Preparing editable metadata (pyproject.toml): finished with status 'done'
2026-08-01T18:03:07.1307314Z Collecting fastapi==0.136.1 (from -r requirements-ci.txt (line 1))
2026-08-01T18:03:07.1869223Z   Downloading fastapi-0.136.1-py3-none-any.whl.metadata (28 kB)
2026-08-01T18:03:07.2142775Z Collecting httpx==0.28.1 (from -r requirements-ci.txt (line 2))
2026-08-01T18:03:07.2194478Z   Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
2026-08-01T18:03:07.2341339Z Collecting Jinja2==3.1.6 (from -r requirements-ci.txt (line 3))
2026-08-01T18:03:07.2394501Z   Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
2026-08-01T18:03:07.2600194Z Collecting openpyxl==3.1.5 (from -r requirements-ci.txt (line 4))
2026-08-01T18:03:07.2646407Z   Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:07.3684890Z Collecting pandas==3.0.3 (from -r requirements-ci.txt (line 5))
2026-08-01T18:03:07.3727314Z   Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)
2026-08-01T18:03:07.4273972Z Collecting plotly==6.7.0 (from -r requirements-ci.txt (line 6))
2026-08-01T18:03:07.4324106Z   Downloading plotly-6.7.0-py3-none-any.whl.metadata (8.6 kB)
2026-08-01T18:03:07.5287785Z Collecting pydantic==2.13.4 (from -r requirements-ci.txt (line 7))
2026-08-01T18:03:07.5330390Z   Downloading pydantic-2.13.4-py3-none-any.whl.metadata (109 kB)
2026-08-01T18:03:07.5584311Z Collecting pypdf==6.14.2 (from -r requirements-ci.txt (line 8))
2026-08-01T18:03:07.5622483Z   Downloading pypdf-6.14.2-py3-none-any.whl.metadata (7.2 kB)
2026-08-01T18:03:07.5873466Z Collecting pytest==9.0.2 (from -r requirements-ci.txt (line 9))
2026-08-01T18:03:07.5931177Z   Downloading pytest-9.0.2-py3-none-any.whl.metadata (7.6 kB)
2026-08-01T18:03:07.9092784Z Collecting ruff==0.15.13 (from -r requirements-ci.txt (line 10))
2026-08-01T18:03:07.9147816Z   Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (26 kB)
2026-08-01T18:03:07.9452740Z Collecting streamlit==1.57.0 (from -r requirements-ci.txt (line 11))
2026-08-01T18:03:07.9517085Z   Downloading streamlit-1.57.0-py3-none-any.whl.metadata (9.6 kB)
2026-08-01T18:03:07.9734070Z Collecting uvicorn==0.47.0 (from -r requirements-ci.txt (line 12))
2026-08-01T18:03:07.9785220Z   Downloading uvicorn-0.47.0-py3-none-any.whl.metadata (6.7 kB)
2026-08-01T18:03:07.9914720Z Collecting xlrd==2.0.2 (from -r requirements-ci.txt (line 13))
2026-08-01T18:03:07.9954274Z   Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)
2026-08-01T18:03:08.0164142Z Collecting yfinance==1.3.0 (from -r requirements-ci.txt (line 14))
2026-08-01T18:03:08.0208297Z   Downloading yfinance-1.3.0-py2.py3-none-any.whl.metadata (6.1 kB)
2026-08-01T18:03:08.0436141Z Collecting starlette>=0.46.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:08.0472229Z   Downloading starlette-1.3.1-py3-none-any.whl.metadata (6.4 kB)
2026-08-01T18:03:08.0641110Z Collecting typing-extensions>=4.8.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:08.0680611Z   Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)
2026-08-01T18:03:08.0786804Z Collecting typing-inspection>=0.4.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:08.0825684Z   Downloading typing_inspection-0.4.2-py3-none-any.whl.metadata (2.6 kB)
2026-08-01T18:03:08.0925853Z Collecting annotated-doc>=0.0.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-01T18:03:08.0961541Z   Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)
2026-08-01T18:03:08.1152526Z Collecting anyio (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.1199299Z   Downloading anyio-4.14.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:08.1377894Z Collecting certifi (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.1414181Z   Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:08.1562080Z Collecting httpcore==1.* (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.1607158Z   Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)
2026-08-01T18:03:08.1781000Z Collecting idna (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-01T18:03:08.1824223Z   Downloading idna-3.18-py3-none-any.whl.metadata (6.1 kB)
2026-08-01T18:03:08.2294727Z Collecting MarkupSafe>=2.0 (from Jinja2==3.1.6->-r requirements-ci.txt (line 3))
2026-08-01T18:03:08.2336161Z   Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
2026-08-01T18:03:08.2444353Z Collecting et-xmlfile (from openpyxl==3.1.5->-r requirements-ci.txt (line 4))
2026-08-01T18:03:08.2489742Z   Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
2026-08-01T18:03:08.4381672Z Collecting numpy>=1.26.0 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:08.4427028Z   Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
2026-08-01T18:03:08.4557661Z Collecting python-dateutil>=2.8.2 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:08.4596220Z   Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2026-08-01T18:03:08.4916214Z Collecting narwhals>=1.15.1 (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-01T18:03:08.4958060Z   Downloading narwhals-2.24.0-py3-none-any.whl.metadata (15 kB)
2026-08-01T18:03:08.5143133Z Collecting packaging (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-01T18:03:08.5187090Z   Downloading packaging-26.2-py3-none-any.whl.metadata (3.5 kB)
2026-08-01T18:03:08.5303086Z Collecting annotated-types>=0.6.0 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-01T18:03:08.5344663Z   Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)
2026-08-01T18:03:09.1273085Z Collecting pydantic-core==2.46.4 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-01T18:03:09.1311234Z   Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
2026-08-01T18:03:09.1436110Z Collecting iniconfig>=1.0.1 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:09.1474695Z   Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:09.1604546Z Collecting pluggy<2,>=1.5 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:09.1641884Z   Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)
2026-08-01T18:03:09.1815947Z Collecting pygments>=2.7.2 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-01T18:03:09.1852686Z   Downloading pygments-2.20.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-01T18:03:09.2064776Z Collecting altair!=5.4.0,!=5.4.1,<7,>=4.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.2372636Z   Downloading altair-6.2.2-py3-none-any.whl.metadata (11 kB)
2026-08-01T18:03:09.2528700Z Collecting blinker<2,>=1.5.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.2569496Z   Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
2026-08-01T18:03:09.2743831Z Collecting cachetools<8,>=5.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.2800948Z   Downloading cachetools-7.1.6-py3-none-any.whl.metadata (5.5 kB)
2026-08-01T18:03:09.2974520Z Collecting click<9,>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.3021238Z   Downloading click-8.4.2-py3-none-any.whl.metadata (2.6 kB)
2026-08-01T18:03:09.3227342Z Collecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.3264368Z   Downloading gitpython-3.1.57-py3-none-any.whl.metadata (13 kB)
2026-08-01T18:03:09.4797918Z Collecting pillow<13,>=7.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.4851450Z   Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.1 kB)
2026-08-01T18:03:09.5017920Z Collecting pydeck<1,>=0.8.0b4 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.5059697Z   Downloading pydeck-0.9.3-py2.py3-none-any.whl.metadata (4.2 kB)
2026-08-01T18:03:09.6391490Z Collecting protobuf<8,>=3.20 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.6433376Z   Downloading protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl.metadata (595 bytes)
2026-08-01T18:03:09.7141714Z Collecting pyarrow>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.7182088Z   Downloading pyarrow-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.0 kB)
2026-08-01T18:03:09.7675725Z Collecting requests<3,>=2.27 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.7743930Z   Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
2026-08-01T18:03:09.7908140Z Collecting tenacity<10,>=8.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.7946393Z   Downloading tenacity-9.1.4-py3-none-any.whl.metadata (1.2 kB)
2026-08-01T18:03:09.8054254Z Collecting toml<2,>=0.10.1 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.8091007Z   Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
2026-08-01T18:03:09.8412347Z Collecting httptools>=0.6.3 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.8452898Z   Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (3.5 kB)
2026-08-01T18:03:09.8614550Z Collecting python-multipart>=0.0.10 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.8642286Z   Downloading python_multipart-0.0.32-py3-none-any.whl.metadata (2.1 kB)
2026-08-01T18:03:09.9546990Z Collecting websockets>=12.0.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.9589086Z   Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.3 kB)
2026-08-01T18:03:09.9707215Z Collecting itsdangerous>=2.1.2 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:09.9745789Z   Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
2026-08-01T18:03:10.0134762Z Collecting watchdog<7,>=2.1.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.0167625Z   Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)
2026-08-01T18:03:10.0318200Z Collecting h11>=0.8 (from uvicorn==0.47.0->-r requirements-ci.txt (line 12))
2026-08-01T18:03:10.0377569Z   Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
2026-08-01T18:03:10.0543077Z Collecting multitasking>=0.0.7 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.0581440Z   Downloading multitasking-0.0.13-py3-none-any.whl.metadata (16 kB)
2026-08-01T18:03:10.0774470Z Collecting platformdirs>=2.0.0 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.0805690Z   Downloading platformdirs-4.11.0-py3-none-any.whl.metadata (5.5 kB)
2026-08-01T18:03:10.1108953Z Collecting pytz>=2022.5 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.1147763Z   Downloading pytz-2026.3.post1-py2.py3-none-any.whl.metadata (22 kB)
2026-08-01T18:03:10.1535064Z Collecting frozendict>=2.3.4 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.1573185Z   Downloading frozendict-2.4.7-py3-none-any.whl.metadata (23 kB)
2026-08-01T18:03:10.1759367Z Collecting peewee>=3.16.2 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.1799001Z   Downloading peewee-4.3.0-py3-none-any.whl.metadata (10 kB)
2026-08-01T18:03:10.1963747Z Collecting beautifulsoup4>=4.11.1 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.2006999Z   Downloading beautifulsoup4-4.15.0-py3-none-any.whl.metadata (3.8 kB)
2026-08-01T18:03:10.2537499Z Collecting curl_cffi>=0.15 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.2575223Z   Downloading curl_cffi-0.16.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (17 kB)
2026-08-01T18:03:10.2938456Z Collecting jsonschema>=3.0 (from altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.2983289Z   Downloading jsonschema-4.26.0-py3-none-any.whl.metadata (7.6 kB)
2026-08-01T18:03:10.3264630Z Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.3298134Z   Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
2026-08-01T18:03:10.3424750Z Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.3463596Z   Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:10.4445126Z Collecting charset_normalizer<4,>=2 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.4485839Z   Downloading charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (41 kB)
2026-08-01T18:03:10.4717233Z Collecting urllib3<3,>=1.26 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.4759356Z   Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
2026-08-01T18:03:10.5465004Z Collecting soupsieve>=1.6.1 (from beautifulsoup4>=4.11.1->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.5567138Z   Downloading soupsieve-2.9.1-py3-none-any.whl.metadata (4.6 kB)
2026-08-01T18:03:10.6482268Z Collecting cffi>=2.0.0 (from curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.6528236Z   Downloading cffi-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
2026-08-01T18:03:10.6674678Z Collecting pycparser (from cffi>=2.0.0->curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-01T18:03:10.6714521Z   Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
2026-08-01T18:03:10.6878317Z Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.6917672Z   Downloading attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)
2026-08-01T18:03:10.7040221Z Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.7078045Z   Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl.metadata (2.9 kB)
2026-08-01T18:03:10.7274908Z Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.7319654Z   Downloading referencing-0.37.0-py3-none-any.whl.metadata (2.8 kB)
2026-08-01T18:03:10.9577798Z Collecting rpds-py>=0.25.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-01T18:03:10.9629964Z   Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
2026-08-01T18:03:10.9854878Z Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-01T18:03:10.9909574Z   Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2026-08-01T18:03:11.0093973Z Downloading fastapi-0.136.1-py3-none-any.whl (117 kB)
2026-08-01T18:03:11.0171795Z Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
2026-08-01T18:03:11.0237132Z Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
2026-08-01T18:03:11.0312912Z Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
2026-08-01T18:03:11.0414424Z Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (11.3 MB)
2026-08-01T18:03:11.1665445Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 92.2 MB/s  0:00:00
2026-08-01T18:03:11.1717645Z Downloading plotly-6.7.0-py3-none-any.whl (9.9 MB)
2026-08-01T18:03:11.2621222Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.9/9.9 MB 117.6 MB/s  0:00:00
2026-08-01T18:03:11.2662959Z Downloading pydantic-2.13.4-py3-none-any.whl (472 kB)
2026-08-01T18:03:11.2741280Z Downloading pypdf-6.14.2-py3-none-any.whl (349 kB)
2026-08-01T18:03:11.2809171Z Downloading pytest-9.0.2-py3-none-any.whl (374 kB)
2026-08-01T18:03:11.2888403Z Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.4 MB)
2026-08-01T18:03:11.3640574Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 158.6 MB/s  0:00:00
2026-08-01T18:03:11.3694280Z Downloading streamlit-1.57.0-py3-none-any.whl (9.2 MB)
2026-08-01T18:03:11.4765367Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.2/9.2 MB 85.9 MB/s  0:00:00
2026-08-01T18:03:11.4806563Z Downloading uvicorn-0.47.0-py3-none-any.whl (71 kB)
2026-08-01T18:03:11.4865378Z Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)
2026-08-01T18:03:11.4939660Z Downloading yfinance-1.3.0-py2.py3-none-any.whl (133 kB)
2026-08-01T18:03:11.5003237Z Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
2026-08-01T18:03:11.5101573Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 257.3 MB/s  0:00:00
2026-08-01T18:03:11.5138803Z Downloading altair-6.2.2-py3-none-any.whl (797 kB)
2026-08-01T18:03:11.5221686Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 797.6/797.6 kB 107.8 MB/s  0:00:00
2026-08-01T18:03:11.5262417Z Downloading blinker-1.9.0-py3-none-any.whl (8.5 kB)
2026-08-01T18:03:11.5319683Z Downloading cachetools-7.1.6-py3-none-any.whl (16 kB)
2026-08-01T18:03:11.5883204Z Downloading click-8.4.2-py3-none-any.whl (119 kB)
2026-08-01T18:03:11.5945115Z Downloading gitpython-3.1.57-py3-none-any.whl (217 kB)
2026-08-01T18:03:11.6012814Z Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
2026-08-01T18:03:11.6087961Z Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
2026-08-01T18:03:11.6154529Z Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.9 MB)
2026-08-01T18:03:11.6718121Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.9/16.9 MB 319.2 MB/s  0:00:00
2026-08-01T18:03:11.6750938Z Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.9 MB)
2026-08-01T18:03:11.6975609Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.9/6.9 MB 330.0 MB/s  0:00:00
2026-08-01T18:03:11.7016004Z Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)
2026-08-01T18:03:11.7084432Z Downloading protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl (327 kB)
2026-08-01T18:03:11.7143870Z Downloading pydeck-0.9.3-py2.py3-none-any.whl (11.4 MB)
2026-08-01T18:03:11.7535150Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 317.6 MB/s  0:00:00
2026-08-01T18:03:11.7567473Z Downloading requests-2.34.2-py3-none-any.whl (73 kB)
2026-08-01T18:03:11.7635274Z Downloading charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (221 kB)
2026-08-01T18:03:11.7711153Z Downloading idna-3.18-py3-none-any.whl (65 kB)
2026-08-01T18:03:11.7771336Z Downloading smmap-5.0.3-py3-none-any.whl (24 kB)
2026-08-01T18:03:11.7838182Z Downloading tenacity-9.1.4-py3-none-any.whl (28 kB)
2026-08-01T18:03:11.7896571Z Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
2026-08-01T18:03:11.7952900Z Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)
2026-08-01T18:03:11.8044654Z Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
2026-08-01T18:03:11.8107325Z Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)
2026-08-01T18:03:11.8170332Z Downloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)
2026-08-01T18:03:11.8227975Z Downloading annotated_types-0.8.0-py3-none-any.whl (13 kB)
2026-08-01T18:03:11.8285355Z Downloading anyio-4.14.2-py3-none-any.whl (125 kB)
2026-08-01T18:03:11.8354698Z Downloading beautifulsoup4-4.15.0-py3-none-any.whl (109 kB)
2026-08-01T18:03:11.8433291Z Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)
2026-08-01T18:03:11.8495981Z Downloading curl_cffi-0.16.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (13.5 MB)
2026-08-01T18:03:11.9566518Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.5/13.5 MB 135.0 MB/s  0:00:00
2026-08-01T18:03:11.9610591Z Downloading cffi-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)
2026-08-01T18:03:11.9673002Z Downloading frozendict-2.4.7-py3-none-any.whl (16 kB)
2026-08-01T18:03:11.9731967Z Downloading h11-0.16.0-py3-none-any.whl (37 kB)
2026-08-01T18:03:11.9793995Z Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (464 kB)
2026-08-01T18:03:11.9861633Z Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)
2026-08-01T18:03:11.9917590Z Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)
2026-08-01T18:03:11.9977684Z Downloading jsonschema-4.26.0-py3-none-any.whl (90 kB)
2026-08-01T18:03:12.0038947Z Downloading attrs-26.1.0-py3-none-any.whl (67 kB)
2026-08-01T18:03:12.0166508Z Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
2026-08-01T18:03:12.0269103Z Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
2026-08-01T18:03:12.0328216Z Downloading multitasking-0.0.13-py3-none-any.whl (16 kB)
2026-08-01T18:03:12.0389158Z Downloading narwhals-2.24.0-py3-none-any.whl (461 kB)
2026-08-01T18:03:12.0457574Z Downloading packaging-26.2-py3-none-any.whl (100 kB)
2026-08-01T18:03:12.0520091Z Downloading peewee-4.3.0-py3-none-any.whl (179 kB)
2026-08-01T18:03:12.0580700Z Downloading platformdirs-4.11.0-py3-none-any.whl (23 kB)
2026-08-01T18:03:12.0647240Z Downloading pyarrow-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (50.1 MB)
2026-08-01T18:03:12.2176531Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.1/50.1 MB 337.4 MB/s  0:00:00
2026-08-01T18:03:12.2214901Z Downloading pygments-2.20.0-py3-none-any.whl (1.2 MB)
2026-08-01T18:03:12.2276096Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 214.2 MB/s  0:00:00
2026-08-01T18:03:12.2321040Z Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2026-08-01T18:03:12.2382419Z Downloading python_multipart-0.0.32-py3-none-any.whl (30 kB)
2026-08-01T18:03:12.2438907Z Downloading pytz-2026.3.post1-py2.py3-none-any.whl (508 kB)
2026-08-01T18:03:12.2500937Z Downloading referencing-0.37.0-py3-none-any.whl (26 kB)
2026-08-01T18:03:12.2559809Z Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (371 kB)
2026-08-01T18:03:12.2629392Z Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2026-08-01T18:03:12.2684940Z Downloading soupsieve-2.9.1-py3-none-any.whl (37 kB)
2026-08-01T18:03:12.2741351Z Downloading starlette-1.3.1-py3-none-any.whl (73 kB)
2026-08-01T18:03:12.2799194Z Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB)
2026-08-01T18:03:12.2931973Z Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (219 kB)
2026-08-01T18:03:12.2993040Z Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
2026-08-01T18:03:12.3048112Z Downloading pycparser-3.0-py3-none-any.whl (48 kB)
2026-08-01T18:03:12.5251235Z Building wheels for collected packages: jarvis-finance
2026-08-01T18:03:12.5334350Z   Building editable for jarvis-finance (pyproject.toml): started
2026-08-01T18:03:12.7385793Z   Building editable for jarvis-finance (pyproject.toml): finished with status 'done'
2026-08-01T18:03:12.7389972Z   Created wheel for jarvis-finance: filename=jarvis_finance-0.1.0-0.editable-py3-none-any.whl size=1509 sha256=47928e1c6cdaa7d9f64d7012beeab00fd593fe31d34160e0e2a223014423f843
2026-08-01T18:03:12.7392659Z   Stored in directory: /tmp/pip-ephem-wheel-cache-653yvu5j/wheels/ad/81/a6/5383a3c32505f4e59976cc011a336e07c6284dcaf35f5a7ea5
2026-08-01T18:03:12.7403304Z Successfully built jarvis-finance
2026-08-01T18:03:12.8720669Z Installing collected packages: pytz, multitasking, xlrd, websockets, watchdog, urllib3, typing-extensions, toml, tenacity, soupsieve, smmap, six, ruff, rpds-py, python-multipart, pypdf, pygments, pycparser, pyarrow, protobuf, pluggy, platformdirs, pillow, peewee, packaging, numpy, narwhals, MarkupSafe, itsdangerous, iniconfig, idna, httptools, h11, frozendict, et-xmlfile, click, charset_normalizer, certifi, cachetools, blinker, attrs, annotated-types, annotated-doc, uvicorn, typing-inspection, requests, referencing, python-dateutil, pytest, pydantic-core, plotly, openpyxl, Jinja2, httpcore, gitdb, cffi, beautifulsoup4, anyio, starlette, pydeck, pydantic, pandas, jsonschema-specifications, jarvis-finance, httpx, gitpython, curl_cffi, yfinance, jsonschema, fastapi, altair, streamlit
2026-08-01T18:03:29.5361379Z 
2026-08-01T18:03:29.5399187Z Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 altair-6.2.2 annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.14.2 attrs-26.1.0 beautifulsoup4-4.15.0 blinker-1.9.0 cachetools-7.1.6 certifi-2026.7.22 cffi-2.1.0 charset_normalizer-3.4.9 click-8.4.2 curl_cffi-0.16.0 et-xmlfile-2.0.0 fastapi-0.136.1 frozendict-2.4.7 gitdb-4.0.12 gitpython-3.1.57 h11-0.16.0 httpcore-1.0.9 httptools-0.8.0 httpx-0.28.1 idna-3.18 iniconfig-2.3.0 itsdangerous-2.2.0 jarvis-finance-0.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 multitasking-0.0.13 narwhals-2.24.0 numpy-2.4.6 openpyxl-3.1.5 packaging-26.2 pandas-3.0.3 peewee-4.3.0 pillow-12.3.0 platformdirs-4.11.0 plotly-6.7.0 pluggy-1.6.0 protobuf-7.35.1 pyarrow-25.0.0 pycparser-3.0 pydantic-2.13.4 pydantic-core-2.46.4 pydeck-0.9.3 pygments-2.20.0 pypdf-6.14.2 pytest-9.0.2 python-dateutil-2.9.0.post0 python-multipart-0.0.32 pytz-2026.3.post1 referencing-0.37.0 requests-2.34.2 rpds-py-2026.6.3 ruff-0.15.13 six-1.17.0 smmap-5.0.3 soupsieve-2.9.1 starlette-1.3.1 streamlit-1.57.0 tenacity-9.1.4 toml-0.10.2 typing-extensions-4.16.0 typing-inspection-0.4.2 urllib3-2.7.0 uvicorn-0.47.0 watchdog-6.0.0 websockets-17.0.1 xlrd-2.0.2 yfinance-1.3.0
2026-08-01T18:03:29.5407526Z 
2026-08-01T18:03:29.5414740Z [notice] A new release of pip is available: 26.1.2 -> 26.2
2026-08-01T18:03:29.5415652Z [notice] To update, run: pip install --upgrade pip
2026-08-01T18:03:29.7668661Z ##[group]Run git diff --check "origin/${GITHUB_BASE_REF:-main}...HEAD"
2026-08-01T18:03:29.7669218Z [36;1mgit diff --check "origin/${GITHUB_BASE_REF:-main}...HEAD"[0m
2026-08-01T18:03:29.7714752Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:29.7715023Z env:
2026-08-01T18:03:29.7715230Z   PYTHONPATH: src
2026-08-01T18:03:29.7715462Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:29.7715841Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:29.7716375Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:29.7716855Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:29.7717230Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:29.7717563Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7717986Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:29.7718444Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7718825Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7719208Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7719596Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:29.7720111Z ##[endgroup]
2026-08-01T18:03:29.7876192Z ##[group]Run python -m jarvis_finance.cli.main git-safety-scan .
2026-08-01T18:03:29.7876715Z [36;1mpython -m jarvis_finance.cli.main git-safety-scan .[0m
2026-08-01T18:03:29.7941261Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:29.7941669Z env:
2026-08-01T18:03:29.7941911Z   PYTHONPATH: src
2026-08-01T18:03:29.7942150Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:29.7942534Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:29.7943083Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:29.7943833Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:29.7944224Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:29.7944566Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7945022Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:29.7945499Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7945914Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7946306Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:29.7946702Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:29.7947031Z ##[endgroup]
2026-08-01T18:03:30.8003616Z GIT_SAFETY_OK
2026-08-01T18:03:30.8185441Z ##[group]Run python -m ruff check \
2026-08-01T18:03:30.8185899Z [36;1mpython -m ruff check \[0m
2026-08-01T18:03:30.8186199Z [36;1m  scripts/ci_portfolio_phase3_gate.py \[0m
2026-08-01T18:03:30.8186527Z [36;1m  src/jarvis_finance/api/main.py \[0m
2026-08-01T18:03:30.8186866Z [36;1m  src/jarvis_finance/api/routers/overview.py \[0m
2026-08-01T18:03:30.8187246Z [36;1m  src/jarvis_finance/api/schemas/portfolio_data.py \[0m
2026-08-01T18:03:30.8187672Z [36;1m  src/jarvis_finance/api/schemas/portfolio_performance.py \[0m
2026-08-01T18:03:30.8188101Z [36;1m  src/jarvis_finance/api/schemas/portfolio_policy.py \[0m
2026-08-01T18:03:30.8188545Z [36;1m  src/jarvis_finance/api/schemas/reconciliation.py \[0m
2026-08-01T18:03:30.8188913Z [36;1m  src/jarvis_finance/api/security.py \[0m
2026-08-01T18:03:30.8189242Z [36;1m  src/jarvis_finance/config/settings.py \[0m
2026-08-01T18:03:30.8189600Z [36;1m  src/jarvis_finance/ledger/cost_basis.py \[0m
2026-08-01T18:03:30.8189975Z [36;1m  src/jarvis_finance/ledger/performance.py \[0m
2026-08-01T18:03:30.8190317Z [36;1m  src/jarvis_finance/quality/freshness.py \[0m
2026-08-01T18:03:30.8190652Z [36;1m  src/jarvis_finance/quality/git_safety.py \[0m
2026-08-01T18:03:30.8191010Z [36;1m  src/jarvis_finance/services/portfolio_data.py \[0m
2026-08-01T18:03:30.8191415Z [36;1m  src/jarvis_finance/services/portfolio_performance.py \[0m
2026-08-01T18:03:30.8191833Z [36;1m  src/jarvis_finance/services/portfolio_policy.py \[0m
2026-08-01T18:03:30.8192243Z [36;1m  src/jarvis_finance/services/reconciliation_snapshot.py \[0m
2026-08-01T18:03:30.8192669Z [36;1m  src/jarvis_finance/services/transfer_pairing.py \[0m
2026-08-01T18:03:30.8193027Z [36;1m  src/jarvis_finance/storage/migrations.py \[0m
2026-08-01T18:03:30.8193336Z [36;1m  tests/conftest.py \[0m
2026-08-01T18:03:30.8194086Z [36;1m  tests/unit/test_api_write_security.py \[0m
2026-08-01T18:03:30.8194433Z [36;1m  tests/unit/test_git_safety.py \[0m
2026-08-01T18:03:30.8194834Z [36;1m  tests/unit/test_portfolio_data_ingestion_reconciliation.py \[0m
2026-08-01T18:03:30.8195287Z [36;1m  tests/unit/test_portfolio_performance_foundation.py \[0m
2026-08-01T18:03:30.8195686Z [36;1m  tests/unit/test_portfolio_policy_foundation.py \[0m
2026-08-01T18:03:30.8196085Z [36;1m  tests/unit/test_reconciliation_snapshot_foundation.py \[0m
2026-08-01T18:03:30.8196451Z [36;1m  tests/unit/test_settings.py \[0m
2026-08-01T18:03:30.8196772Z [36;1m  tests/unit/test_transfer_pairing_v2.py[0m
2026-08-01T18:03:30.8241182Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:30.8241438Z env:
2026-08-01T18:03:30.8241799Z   PYTHONPATH: src
2026-08-01T18:03:30.8242028Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:30.8242415Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:30.8242955Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:30.8243587Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:30.8243970Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:30.8244303Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8244738Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:30.8245172Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8245560Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8245951Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8246357Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:30.8246699Z ##[endgroup]
2026-08-01T18:03:30.8715719Z All checks passed!
2026-08-01T18:03:30.8748806Z ##[group]Run python -m compileall -q src tests scripts/ci_portfolio_phase3_gate.py
2026-08-01T18:03:30.8749438Z [36;1mpython -m compileall -q src tests scripts/ci_portfolio_phase3_gate.py[0m
2026-08-01T18:03:30.8794159Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:30.8794414Z env:
2026-08-01T18:03:30.8794613Z   PYTHONPATH: src
2026-08-01T18:03:30.8794842Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:30.8795226Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:30.8795753Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:30.8796238Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:30.8796601Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:30.8796932Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8797358Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:30.8797822Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8798205Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8798593Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:30.8798996Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:30.8799320Z ##[endgroup]
2026-08-01T18:03:31.5200497Z ##[group]Run python scripts/ci_portfolio_phase3_gate.py
2026-08-01T18:03:31.5201212Z [36;1mpython scripts/ci_portfolio_phase3_gate.py[0m
2026-08-01T18:03:31.5265984Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:31.5266413Z env:
2026-08-01T18:03:31.5266797Z   PYTHONPATH: src
2026-08-01T18:03:31.5267207Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:31.5267928Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:31.5268929Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:31.5269862Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:31.5270555Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:31.5271158Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:31.5271971Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:31.5272792Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:31.5274048Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:31.5274855Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:31.5275590Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:31.5276197Z ##[endgroup]
2026-08-01T18:03:32.7676504Z sprint5_fixture_schema=40
2026-08-01T18:03:33.1544191Z phase3_migration_gate=PASS
2026-08-01T18:03:33.1554621Z empty_schema=49 integrity=ok ingestion_analysis_scope_rows=0 default_performance_included=0
2026-08-01T18:03:33.1565239Z sprint5_schema=40_to_49 integrity=ok business_digest=bb8a14c6af1f793c4d521db72516f441685ab52f30336d26afba8b2dcbb95a01 scope_normalized=true audit_bound=true second_run_noop=true
2026-08-01T18:03:33.1567134Z settings_guard=PASS production_paths_rejected=true
2026-08-01T18:03:33.1654808Z ##[group]Run mkdir -p /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:33.1655350Z [36;1mmkdir -p /tmp/financemanager-phase3-controls/runtime[0m
2026-08-01T18:03:33.1655721Z [36;1mpython -m pytest -q \[0m
2026-08-01T18:03:33.1656019Z [36;1m  tests/unit/test_api_write_security.py \[0m
2026-08-01T18:03:33.1656346Z [36;1m  tests/unit/test_settings.py \[0m
2026-08-01T18:03:33.1656730Z [36;1m  tests/unit/test_portfolio_data_ingestion_reconciliation.py \[0m
2026-08-01T18:03:33.1657194Z [36;1m  tests/unit/test_portfolio_performance_foundation.py \[0m
2026-08-01T18:03:33.1657600Z [36;1m  tests/unit/test_portfolio_policy_foundation.py \[0m
2026-08-01T18:03:33.1658011Z [36;1m  tests/unit/test_reconciliation_snapshot_foundation.py \[0m
2026-08-01T18:03:33.1658421Z [36;1m  tests/unit/test_transfer_pairing_v2.py[0m
2026-08-01T18:03:33.1702475Z shell: /usr/bin/bash -e {0}
2026-08-01T18:03:33.1702733Z env:
2026-08-01T18:03:33.1702934Z   PYTHONPATH: src
2026-08-01T18:03:33.1703199Z   JARVIS_FINANCE_ENV: test
2026-08-01T18:03:33.1703938Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-controls/finance.sqlite3
2026-08-01T18:03:33.1704480Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-controls/runtime
2026-08-01T18:03:33.1704956Z   JARVIS_FINANCE_CI_ROOT: /tmp/financemanager-phase3-migration
2026-08-01T18:03:33.1705325Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-01T18:03:33.1705665Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:33.1706109Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib/pkgconfig
2026-08-01T18:03:33.1706535Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:33.1706929Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:33.1707349Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.15/x64
2026-08-01T18:03:33.1707752Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.15/x64/lib
2026-08-01T18:03:33.1708081Z ##[endgroup]
2026-08-01T18:04:01.3259983Z ........................................................................ [ 85%]
2026-08-01T18:04:06.1915236Z ............                                                             [100%]
2026-08-01T18:04:06.1916200Z =============================== warnings summary ===============================
2026-08-01T18:04:06.1917337Z ../../../../../opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages/fastapi/testclient.py:1
2026-08-01T18:04:06.1919307Z   /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
2026-08-01T18:04:06.1921056Z     from starlette.testclient import TestClient as TestClient  # noqa
2026-08-01T18:04:06.1921677Z 
2026-08-01T18:04:06.1922222Z -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
2026-08-01T18:04:06.1923051Z 84 passed, 1 warning in 32.35s
2026-08-01T18:04:06.3719700Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:04:06.3720967Z Post job cleanup.
2026-08-01T18:04:06.5006075Z (node:2300) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-01T18:04:06.5007690Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-01T18:04:06.5365449Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/work/FinanceManager/FinanceManager --files-from manifest.txt --use-compress-program zstdmt
2026-08-01T18:04:07.1751834Z (node:2300) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
2026-08-01T18:04:08.1617271Z Sent 89996525 of 157105389 (57.3%), 85.7 MBs/sec
2026-08-01T18:04:08.3844689Z Sent 157105389 of 157105389 (100.0%), 122.5 MBs/sec
2026-08-01T18:04:08.4634053Z Cache saved with the key: setup-python-Linux-x64-24.04-Ubuntu-python-3.11.15-pip-1142f0e2496362389faab45cc2b2d5dacbb96b059f6c5143fd25b1b0407d64f2
2026-08-01T18:04:08.4865343Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-01T18:04:08.4866602Z Post job cleanup.
2026-08-01T18:04:08.5844168Z [command]/usr/bin/git version
2026-08-01T18:04:08.5897538Z git version 2.54.0
2026-08-01T18:04:08.5972331Z Temporarily overriding HOME='/home/runner/work/_temp/ae399655-cce5-43bb-a5fd-9e65723cad7a' before making global git config changes
2026-08-01T18:04:08.5994490Z Adding repository directory to the temporary git global config as a safe directory
2026-08-01T18:04:08.6017903Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-01T18:04:08.6085057Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-01T18:04:08.6098522Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-01T18:04:08.6455536Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-01T18:04:08.6508118Z http.https://github.com/.extraheader
2026-08-01T18:04:08.6526506Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-08-01T18:04:08.6614847Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-01T18:04:08.7015136Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-01T18:04:08.7049376Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-01T18:04:08.7879653Z Cleaning up orphan processes
2026-08-01T18:04:08.8140892Z ##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
